home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Creative Review 28
/
Creative-Review-CD-ROM-28.iso
/
mac
/
kungfu
/
assets
/
game.dir
/
00005_Script_game class
< prev
next >
Wrap
Text File
|
1997-08-08
|
7KB
|
335 lines
-- game manager
-- --------------------------------------------------
property gamelist
property levellist
property screenlist
property oldtype
property type
property screennumber
property levelnumber
property screencount
property levelcount
property backcast
property loop
property oldbacks
property oldloops
property score
property speed
property bonuslist
property starttime
property updategap
-- ==================================================
global gplayer
global gbaddy
global gboss
global gsting
global gtime
global gback
global gsound
-- ==================================================
-- new method
-- --------------------------------------------------
on new me, props
minit me, props
return me
end mnew
-- ==================================================
-- minit method
-- --------------------------------------------------
on minit me
-- put "in minit game manager"
set gamelist = data2list ( "game data" )
set bonuslist = data2list ( "bonus data" )
set oldtype = 0
set speed = 1
set updategap = 7
set oldbacks = [ "keys" ]
set oldloops = [ "loop.3.3" ]
-- put "out minit game manager"
end minit
-- ==================================================
-- mstartgame method
-- --------------------------------------------------
on mstartgame me
-- put "in mstartgame game"
set score = 0
set levelnumber = 1
set screennumber = 1
msetscreenlist me
mmove gsound, #game, #slide
mslide gback, backcast
-- put "out mstartgame game"
end mstartgame me
-- ==================================================
-- mfinishgame method
-- --------------------------------------------------
on mfinishgame me
put "in mfinishgame game"
hendgame
go frame "win"
put "out mfinishgame game"
end mfinishgame
-- ==================================================
-- mnext method
-- --------------------------------------------------
on mnextscreen me
-- put "in mnextscreen game"
if not ( msetnextnumber ( me ) ) then return
msetscreenlist me
mstopback gsound
mdraw gplayer
maddtask gtime, me, the timer
-- put "out mnextscreen game"
end mnextscreen
-- ==================================================
-- mdotask method
-- --------------------------------------------------
on mdotask me
-- put "in mdotask game"
if msoundbusy ( gsound ) then return updategap
mmove gsound, #game, #slide
mslide gback, backcast
return false
-- put "out mdotask game"
end mdotask me
-- ==================================================
-- mstartscreen method
-- --------------------------------------------------
on mstartscreen me
-- put "in mstartscreen game"
case type of
#baddy:
mback gsound, loop
mstart gplayer
mstart gbaddy, screenlist
#boss:
mback gsound, loop
mstart gplayer
mstart gboss, screenlist
#sting:
mstart gsting, screenlist
end case
set starttime = the timer
-- put "out mstartscreen game"
end mstartscreen
-- ==================================================
-- on mgetbonus method
-- --------------------------------------------------
on mgetbonus me
-- put "in mgetbonus game"
set timetaken = the timer - starttime
set timetaken = timetaken / 60
set levelbonus = getaprop ( bonuslist, levelnumber )
set screenbonus = getaprop ( levelbonus, screennumber )
set targettime = getpropat ( screenbonus, 1 )
set bonusrate = getat ( screenbonus, 1 )
-- put "targettime: " , targettime
-- put "timetaken: " , timetaken
if timetaken < targettime then
set bonussecs = targettime - timetaken
set bonusscore = bonussecs * bonusrate
-- put "bonusscore: " , bonusscore
return bonusscore
end if
-- put "no bonus !"
return 0
-- put "out mgetbonus game"
end mgetbonus
-- ==================================================
-- mfinishscreen method
-- --------------------------------------------------
on mfinishscreen me
-- put "in mfinishscreen game"
case type of
#baddy:
mabort gplayer
mclean gcell
#boss:
mabort gplayer
mclean gcell
#sting:
mhide gsting
end case
mdraw gscore
mnextscreen me
return false
-- put "out mfinishscreen game"
end mfinishscreen
-- ==================================================
-- mfinishslide method
-- --------------------------------------------------
on mfinishslide me
-- put "in mfinishslide game"
munloadback me
mmove gsound, #game, #endslide
mstartscreen me
-- put "out mfinishslide game"
end mfinishslide
-- ==================================================
-- msetnextnumber method
-- --------------------------------------------------
on msetnextnumber me
-- put "in msetnextnumber game"
set screennumber = screennumber + 1
if screennumber > screencount then
set levelnumber = levelnumber + 1
if levelnumber > levelcount then
mfinishgame me
return false
end if
set screennumber = 1
end if
return true
-- put "out msetnextnumber game"
end msetnextnumber me
-- ==================================================
-- msetscreenlist method
-- --------------------------------------------------
on msetscreenlist me
-- put "in msetscreenlist game class :"
set oldtype = type
set levellist = getaprop ( gamelist , levelnumber )
set screenlist = getaprop ( levellist, screennumber )
set levelcount = count ( gamelist )
set screencount = count ( levellist )
set type = getaprop ( screenlist, #type )
set backcast = getaprop ( screenlist, #back )
set loop = getaprop ( screenlist, #loop )
add oldbacks, backcast
add oldloops, loop
preloadcast backcast
preload loop
-- put "preload: " , backcast, loop
-- put "out msetscreenlist game class :"
end msetscreenlist
-- ==================================================
-- munloadback method
-- --------------------------------------------------
on munloadback me
-- put "in munloadback game class :"
set unloadback = getat ( oldbacks , 1 )
deleteat ( oldbacks, 1 )
unloadmember unloadback
set unloadloop = getat ( oldloops , 1 )
deleteat ( oldloops, 1 )
if stringp ( unloadloop ) then unloadmember unloadloop
put "munloadback: " , unloadback
put "munloadloop: " , unloadloop
-- put "out munloadback game class :"
end munloadback